package org.yzhzc.friend.service.exam;

import org.yzhzc.common.core.domain.TableDataInfo;
import org.yzhzc.friend.domain.exam.dto.ExamQueryDTO;
import org.yzhzc.friend.domain.exam.dto.ExamRankDTO;
import org.yzhzc.friend.domain.exam.vo.ExamVO;

import java.util.List;

/**
 * 竞赛服务接口。
 * 定义了与竞赛相关的业务方法，包括竞赛列表查询、竞赛排名查询、竞赛题目导航等。
 */
public interface IExamService {

    /**
     * 查询竞赛列表。
     *
     * @param examQueryDTO 竞赛查询条件
     * @return 竞赛VO列表
     */
    List<ExamVO> list(ExamQueryDTO examQueryDTO);

    /**
     * 从 Redis 中查询竞赛列表。
     *
     * @param examQueryDTO 竞赛查询条件
     * @return 分页数据
     */
    TableDataInfo redisList(ExamQueryDTO examQueryDTO);

    /**
     * 查询竞赛排名列表。
     *
     * @param examRankDTO 竞赛排名查询条件
     * @return 分页数据
     */
    TableDataInfo rankList(ExamRankDTO examRankDTO);

    /**
     * 获取竞赛的第一个题目ID。
     *
     * @param examId 竞赛ID
     * @return 第一个题目ID（字符串形式）
     */
    String getFirstQuestion(Long examId);

    /**
     * 获取当前题目的上一个题目ID。
     *
     * @param examId     竞赛ID
     * @param questionId 当前题目ID
     * @return 上一个题目ID（字符串形式）
     */
    String preQuestion(Long examId, Long questionId);

    /**
     * 获取当前题目的下一个题目ID。
     *
     * @param examId     竞赛ID
     * @param questionId 当前题目ID
     * @return 下一个题目ID（字符串形式）
     */
    String nextQuestion(Long examId, Long questionId);
}
